package com.dms.modules.order.vo;

import com.dms.modules.order.entity.OrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
@ApiModel("订单详情展示对象")
public class OrderDetailVO {
    
    @ApiModelProperty("订单ID")
    private Long id;
    
    @ApiModelProperty("订单编号")
    private String orderNo;
    
    @ApiModelProperty("用户ID")
    private Long userId;
    
    @ApiModelProperty("商家ID")
    private Long merchantId;
    
    @ApiModelProperty("订单总金额")
    private BigDecimal totalAmount;
    
    @ApiModelProperty("实付金额")
    private BigDecimal payAmount;
    
    @ApiModelProperty("运费")
    private BigDecimal freightAmount;
    
    @ApiModelProperty("优惠金额")
    private BigDecimal discountAmount;
    
    @ApiModelProperty("优惠券抵扣金额")
    private BigDecimal couponAmount;
    
    @ApiModelProperty("订单状态：0-待付款 1-待发货 2-待收货 3-已完成 4-已取消")
    private Integer status;
    
    @ApiModelProperty("订单状态文本")
    private String statusText;
    
    @ApiModelProperty("支付方式")
    private String paymentMethod;
    
    @ApiModelProperty("支付流水号")
    private String paymentNo;
    
    @ApiModelProperty("支付时间")
    private LocalDateTime paymentTime;
    
    @ApiModelProperty("发货时间")
    private LocalDateTime deliveryTime;
    
    @ApiModelProperty("收货时间")
    private LocalDateTime receiveTime;
    
    @ApiModelProperty("收货地址信息")
    private String addressSnapshot;
    
    @ApiModelProperty("订单备注")
    private String remark;
    
    @ApiModelProperty("快递公司")
    private String deliveryCompany;
    
    @ApiModelProperty("快递单号")
    private String deliveryNo;
    
    @ApiModelProperty("取消原因")
    private String cancelReason;
    
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
    
    @ApiModelProperty("是否需要发票")
    private Integer invoiceRequired;
    
    @ApiModelProperty("发票信息")
    private String invoiceInfo;
    
    @ApiModelProperty("订单项列表")
    private List<OrderItem> orderItems;
    
    @ApiModelProperty("是否可支付")
    private Boolean canPay;
    
    @ApiModelProperty("是否可取消")
    private Boolean canCancel;
    
    @ApiModelProperty("是否可确认收货")
    private Boolean canConfirm;
    
    @ApiModelProperty("是否可申请售后")
    private Boolean canRefund;
    
    @ApiModelProperty("商品总数")
    private Integer totalQuantity;
    
    @ApiModelProperty("物流跟踪信息")
    private String trackingInfo;
    
    @ApiModelProperty("商家名称")
    private String merchantName;
    
    @ApiModelProperty("用户名称")
    private String userName;
    
    @ApiModelProperty("用户手机号")
    private String userPhone;
    
    @ApiModelProperty("收货人姓名")
    private String receiverName;
    
    @ApiModelProperty("收货人电话")
    private String receiverPhone;
    
    @ApiModelProperty("收货地址（省市区）")
    private String receiverAddress;
    
    @ApiModelProperty("收货详细地址")
    private String receiverDetailAddress;
    
    @ApiModelProperty("主商品图片")
    private String mainProductImg;
} 